package com.kly.sc.api.application.controller.im.request;

import com.fqgj.common.api.ParamsObject;
import lombok.Data;

/**
 * 在线状态订阅服务参数接收类
 * @author linqu
 */
@Data
public class ReceiveStatusRequest extends ParamsObject {

    /**
     * 用户 ID
     */
    private String userid;

    /**
     * 状态：0：online 上线、1：offline 离线、2：logout 登出。
     * online：上线状态表示 App 已经连接到融云服务器，即客户端调用 connect 方法连接成功。
     * offline：离线状态表示 App 已经断开与融云服务器的连接，即客户端调用 disconnect 方法或因异常情况断开连接，极端情况下如应用连接了代理网络，应用异常断网，此时代理服务与融云服务的连接缓存仍然存在，在此情况下离线状态会延迟 5 分钟同步。
     * logout：登出状态表示 App 已经退出登录状态，即客户端调用 logout 方法。
     *
     *
     * 用户离线状态（offline）默认还覆盖以下场景：
     *
     *
     *
     * 多设备互踢场景：App 用户在 A 设备登录后，又在 B 设备上登录，B 将 A 踢下线后，用户在 A 设备的离线状态也会触发服务端同步 offline 状态。
     * 多平台登录场景：App 用户在不同平台登录，在任意平台上断开连接后会触发服务端同步 offline 状态。
     */
    private String status;

    /**
     * 操作系统：iOS、Android、Websocket、PC、MiniProgram（小程序），用户上线时同步
     */
    private String os;

    /**
     * 发生时间
     */
    private Long time;

    /**
     * 用户当前的 IP 地址及端口
     */
    private String clientIp;

    /**
     * 一个连接的唯一 ID。如果同一用户在多端同时在线，则会有多个连接，可使用此 ID 进行区分
     */
    private String sessionId;

    /**
     * 来源
     */
    private String source;


    @Override
    public void validate() {

    }
}
